(delimited_expression ["(" ")" "[" "]" "|"] @punctuation.bracket)
(delimited_expression ["<{"] @punctuation.bracket (#set! conceal "⟨"))
(delimited_expression ["}>"] @punctuation.bracket (#set! conceal "⟩"))
(delimited_expression ["{_"] @punctuation.bracket (#set! conceal "⌊"))
(delimited_expression ["_}"] @punctuation.bracket (#set! conceal "⌋"))
(delimited_expression ["{^"] @punctuation.bracket (#set! conceal "⌈"))
(delimited_expression ["^}"] @punctuation.bracket (#set! conceal "⌉"))
(delimited_expression ["||"] @punctuation.bracket (#set! conceal "‖"))
(delimited_expression ["\\{"] @punctuation.bracket (#set! conceal "{"))
(delimited_expression ["\\}"] @punctuation.bracket (#set! conceal "}"))
["{" "}"] @punctuation.bracket
["," ";"] @punctuation.delimiter
["^" "_" "'" "\\"] @punctuation.special

(number) @number
(symbol) @operator
(text) @string
(operator_name) @function
(passthrough) @string
(modifier) @method.call
(command) @function.macro

((modifier) @method.call (#eq? @method.call ".'") (#set! conceal "'"))
((modifier) @method.call (#eq? @method.call ".*") (#set! conceal "*"))
((modifier) @method.call (#eq? @method.call ".+") (#set! conceal "⁺"))
((modifier) @method.call (#eq? @method.call ".-") (#set! conceal "⁻"))
((modifier) @method.call (#eq? @method.call ".C") (#set! conceal "ᶜ"))
((modifier) @method.call (#eq? @method.call ".D") (#set! conceal "¨"))
((modifier) @method.call (#eq? @method.call ".L") (#set! conceal "‾"))
((modifier) @method.call (#eq? @method.call ".^") (#set! conceal "^"))
((modifier) @method.call (#eq? @method.call ".`") (#set! conceal "`"))
((modifier) @method.call (#eq? @method.call ".d") (#set! conceal "˙"))
((modifier) @method.call (#eq? @method.call ".l") (#set! conceal "¯"))
((modifier) @method.call (#eq? @method.call ".v") (#set! conceal "→"))
((modifier) @method.call (#eq? @method.call ".~") (#set! conceal "~"))

["/" "ncr"] @function.builtin
(["sq" "rt"] @function.builtin (#set! conceal "√"))
(environment
  . _ @keyword
  . _
  . _ @keyword
  .)

; (term ("^" @conceal (#set! conceal "")) . ((number) @number (#set! conceal "²"))) (#eq? @number "2")

;=== CONTENT BELOW IS AUTO-GENERATED ===;
((symbol) @variable
  (#any-of? @variable "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z")
  (#heine-conceal! @variable))
((symbol) @variable
  (#any-of? @variable "al" "be" "ga" "de" "ep" "ze" "et" "th" "io" "ka" "la" "mu" "nu" "xi" "pi" "rh" "si" "ta" "up" "ph" "ch" "ps" "om" "ep*" "ka*" "th*" "pi*" "rh*" "si*" "ph*" "ga*" "Al" "Be" "Ga" "De" "Ep" "Ze" "Et" "Th" "Io" "Ka" "La" "Mu" "Nu" "Xi" "Pi" "Rh" "Si" "Ta" "Up" "Ph" "Ch" "Ps" "Om" "Ga*" "De*" "Th*" "La*" "Xi*" "Pi*" "Si*" "Up*" "Ph*" "Ps*" "Om*" "dd" "pd" "na" "ll" "inf" "O/" "Co" "ale")
  (#heine-conceal! @variable))
((symbol) @type
  (#any-of? @type "CC" "HH" "NN" "PP" "QQ" "RR" "SS" "ZZ")
  (#heine-conceal! @type))
((symbol) @function
  (#any-of? @function "div" "mod" "gcd" "lcm" "min" "max" "ifm" "sup" "essifm" "esssup" "sin" "cos" "tan" "tg" "cot" "sec" "csc" "cosec" "asin" "acos" "atan" "atg" "acot" "actg" "sinh" "cosh" "tanh" "asinh" "acosh" "atanh" "exp" "log" "ln" "lg" "det" "ker" "dim" "lim" "limsup" "liminf" "arg" "sgn" "crd" "ord" "argmin" "argmax" "_d")
  (#heine-conceal! @function))
((symbol) @operator
  (#any-of? @operator "not" "and" "or" "all" "ex" "==>" "<==" "<=>" ":" "=" "!=" "/=" "==" "<" ">" "<=" ">=" "in" "ni" "nin" "nni" "s<" "s<=" "s>" "s>=" "s<<" "s>>" ":=" "=:" "~" "~=" "=~" "~~" ".=" "<<" ">>" "<<<" ">>>" "<>" "><" "::" "prp" "md" "++" "**" "***" "Cap" "Cup" "And" "Or" "O+" "O*" "O*x" "ig" "iig" "iiig" "oig" "oiig" "oiiig" "+" "-" "*" "*x" "div" "+-" "-+" "oo" "o+" "o-" "o*" "o*x" "o/" "*a" "->" "<-" "=>" "<-=" "<->" "<<-" "->>" "->->" "<-<-" "-><-" "<-*->" ":->" "cap" "cup" "s-" "cup+" "!" "Re" "Im" "l=" "l:->" "l->" "l<-" "l=>" "l<-=" "l->>" "l<<-" "<B" "<B=" "<B<=" "<B>=" "..l" "..c" "..d" "..v" "..+" "..*" "..*x" "..cap" "..cup" "..and" "..or" ":>" "<:" "p<" ">p" "b<" ">b" "B<" ">B" "a<" ">a" "<p" "p>" "<b" "b>" "<B" "B>" "<a" "a>" "dg" "_q" "_Q")
  (#heine-conceal! @operator))
